package com.qumitech.visualnovel.datasource.nocore;

import com.qumitech.visualnovel.pubdef.dto.chat.ChatMsgQueryDTO;
import com.qumitech.visualnovel.model.dao.nocore.ChatMsgDO;
import org.apache.ibatis.annotations.Param;
import java.util.*;

public interface ChatMsgDOMapper {
    int deleteByPrimaryKey(Long id);

    int insert(ChatMsgDO record);

    int insertSelective(ChatMsgDO record);

    ChatMsgDO selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(ChatMsgDO record);

    int updateByPrimaryKey(ChatMsgDO record);

    int getChatMsgCount(
        @Param("tableName") String tableName,
        @Param("fromUidList") List<Long> fromUidList,
        @Param("toUid") String toUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    List<ChatMsgQueryDTO> getChatMsgList(
        @Param("tableName") String tableName,
        @Param("fromUidList") List<Long> fromUidList,
        @Param("toUid") String toUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime,
        @Param("offset") int offset,
        @Param("limit") int limit);

    List<String> getStatisticFromList(
        @Param("tableName") String tableName,
        @Param("toUid") String toUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    List<Long> getStatisticToList(
        @Param("tableName") String tableName,
        @Param("fromUid") String fromUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    int getImInteractiveMsgCount(
        @Param("tableName") String tableName,
        @Param("fromUid") String fromUid,
        @Param("toUid") String toUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    List<ChatMsgQueryDTO> getImInteractiveMsgList(
        @Param("tableName") String tableName,
        @Param("fromUid") String fromUid,
        @Param("toUid") String toUid,
        @Param("category") String category,
        @Param("msgContent") String msgContent,
        @Param("limitType") String limitType,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime,
        @Param("offset") int offset,
        @Param("limit") int limit);
}
